package controller;


import java.util.List;

import Model.*;
import oficina.*;



public class Controller {
	private BD Banco = new BD();
        private clienteFactory fabricaCliente = new clienteFactory();
	private static Controller cadastroControl;
	private Controller(){}
	public static Controller getInstance(){
		if (cadastroControl == null)
		{
			cadastroControl = new Controller();
		}
		return cadastroControl;
	}
	
		public funcionario criar_funcionario(String nome, int CPF, int telefone, String email, String endereco, String login_funcionario, String senha_funcionario){
			return new funcionario(nome, CPF, telefone, email, endereco, login_funcionario, senha_funcionario);
		}
		public OrdemServico criar_ordemServico(String problema, int tempo, int data, cliente Cli){
			return new OrdemServico(problema, tempo, data, Cli);
		}
		public void addServicoParaOrdem(OrdemServico Ord, servico Serv){
			Ord.addServico(Serv);
		}
		public Modelo_veiculo criarModelo(String nome, String marca, String desc){
			return new Modelo_veiculo(nome, marca, desc);
		}
		public veiculo criarVeiculo(String placa, String cor, int ano, Modelo_veiculo model){
			return new veiculo(placa, cor, ano, model);
		}
		public void setCliente(cliente cli ,String nome, int CPF, int tel, String email, String end){
			cli.setEmail(email);
			cli.setEndereco(end);
			cli.setNome(nome);
			cli.setTelefone(tel);
		}
		public void addVeiculoCliente(cliente cli, veiculo vei){
			cli.incluir_veiculo(vei);
		}
		
		public tipo_de_servico criarTipoDeServico(int tempo_medio, String nome_servico, float valor, int tempo_garantia, String descricao_servico){
			return new tipo_de_servico(tempo_medio, nome_servico, valor, tempo_garantia, descricao_servico);
		}
		
		public servico criarServico(float valor, int data, tipo_de_servico tipo){
			return new servico(valor, data, tipo);
		}
		
		public void add_funcionario(funcionario func){
			this.Banco.incluir_funcionario(func);
			
		}
		public void add_cliente(cliente cli){
			this.Banco.incluir_cliente(cli);
		}
		public void add_ord_serv(OrdemServico ord){
			this.Banco.incluir_ordem(ord);
		}
		public void add_modelo(Modelo_veiculo mod){
			this.Banco.incluir_modelo(mod);
		}
		public void add_fornecedor(){
			fornecedor forn = new fornecedor(null, 0, 0, null, null, 0);
			this.Banco.incluir_fornecedor(forn);
		}
		public void add_peca(){
			peca pec = new peca(null, 0, null, null, 0, 0, 0);
			this.Banco.incluir_peca(pec);
		}
	/////////////////////////////////////////////////////////////
		public void rem_funcionario(funcionario func){
		
			this.Banco.remover_funcionario(func);
		}
		public void rem_cliente(cliente cli){
		
			this.Banco.remover_cliente(cli);
		}
		public void rem_ord_serv(OrdemServico ord){
		
			this.Banco.remover_ord_serv(ord);
		}
		public void rem_modelo(Modelo_veiculo mod){
		
			this.Banco.remover_modelo(mod);
		}
		public void rem_fornecedor(fornecedor forn){
		
			this.Banco.remover_fornecedor(forn);
		}
		public void rem_peca(peca pec){
		
			this.Banco.remover_peca(pec);
		}
	

}
